package com.example.laundry.service;

import com.example.laundry.dto.LaundryOrderDto;
import com.example.laundry.dto.LaundryItemDto;
import com.example.laundry.dto.OrderStatusHistoryDto;
import com.example.laundry.entity.LaundryOrderEntity;
import com.example.laundry.entity.UserEntity;
import com.example.laundry.exception.ResourceNotFoundException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface LaundryOrderService {
    LaundryOrderDto createOrder(LaundryOrderDto orderDto, Long userId);
    LaundryOrderDto updateOrder(Long id, LaundryOrderDto orderDto);
    LaundryOrderDto getOrderById(Long id);
    Page<LaundryOrderDto> getAllOrders(Pageable pageable);
    List<LaundryOrderDto> getOrdersByUser(Long userId);
    void deleteOrder(Long id);
    LaundryOrderDto updateOrderStatus(Long id, String newStatus, Long changedByUserId);
    List<OrderStatusHistoryDto> getOrderStatusHistory(Long orderId);
    LaundryOrderDto addItemsToOrder(Long orderId, List<LaundryItemDto> items);
    LaundryOrderDto removeItemFromOrder(Long orderId, Long itemId);
}